/*
 * Copyright (c) 2023 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/** @file file_ex.h
*
*  @brief Provides global file operation functions implemented in c_utils.
*/

/**
* @defgroup FileReadWrite
* @{
* @brief Provides interfaces for reading data from and writing data to files.
*
* You can use the interfaces to read data from a file, write data to a file,
* and search for the specified string.
*/

#ifndef UTILS_BASE_FILE_EX_H
#define UTILS_BASE_FILE_EX_H

#include <string>
#include <vector>

namespace OHOS {
/**
 * @ingroup FileReadWrite
 * @brief Reads data as a vector from a file.
 *
 * @param filePath Indicates the path of the target file.
 * @param content Indicates the <b>std::vector</b> object used to hold
 * the data read.
 * @return Returns <b>true</b> if the data is read successfully;
 * returns <b>false</b> otherwise.
 */
bool LoadBufferFromFile(const std::string &filePath, std::vector<char> &content);

/**
 * @ingroup FileReadWrite
 * @brief Writes data of a vector to a file.
 *
 * @param filePath Indicates the path of the target file.
 * @param content Indicates the <b>std::vector</b> object to write.
 * @return Returns <b>true</b> if the data is written successfully;
 * returns <b>false</b> otherwise.
 */
bool SaveBufferToFile(const std::string &filePath, const std::vector<char> &content, bool truncated = true);

/**
 * @ingroup FileReadWrite
 * @brief Checks whether a file exists.
 *
 * @param filePath Indicates the file to check.
 * @return Returns <b>true</b> if the file exists; returns <b>false</b>
 * if any error (e.g. Permission Denied) occurs.
 */
bool FileExists(const std::string &fileName);
}
#endif
